//服务器的脚本

import gulp from 'gulp';
import gulpif from 'gulp-if';
import liveserver from 'gulp-live-server';  //这个包能启动服务器，可理解成启动一个脚本作为服务器
import args from './util/args';

gulp.task('serve',(cb)=>{ //创建一个serve的任务，并传入一个回调：cd
  if(!args.watch) return cb();  //如果不是处于监听状态下，直接返回回调参数


  //如果处在监听状态下，则创建一个服务器。这样就创建了一个服务器
  // --harmony表示在当前命令行下执行后面的脚本。'server/bin/www'这放的就是个脚本
  var server = liveserver.new(['--harmony','server/bin/www']);
  server.start();

  //我们这个构建脚本的目的不是只为了创建服务器，而是为了服务器下面所有的文件发生改变的时候，要让浏览器自动刷新
  //所以要监听所有的js和ejs模板引擎

  //gulp.watch做文件的监听，参数一是个数组，这个数组告诉它要监听哪些路径，下面传进来的是两个路径
  gulp.watch(['server/public/**/*.js','server/views/**/*.ejs'],function(file){
    server.notify.apply(server,[file]); //监听完了之后，要把这个改动通知给服务器，让服务器做相应的处理
  })

  //在server中，上面处理的是前端的资源文件。

  //但是，如果是服务器中的某些路由发生了变化，写的某些接口发生了变化，这就不是刷新页面能解决的了，需要server重启才能生效
  //即还要监听需要重启服务的这些文件
  gulp.watch(['server/routes/**/*.js','server/app.js'],function(){  //routes是服务器的一些脚本文件，做接口用的，app.js是整个服务启动的入口的文件
    server.start.bind(server)() //调用server的startapi进行重启
  });
})
